/**
  ** 用于应用参数，系统异常定义
**/

#ifndef SYSMEMBERS_H
#define SYSMEMBERS_H

#include <future>
#include "MU_ExpMessage.h"
#include "base/data_types.h"
#include "src/define/func_define.h"
#include "src/define/data_define.h"
#include "src/SoftWare/DateTime/DateTime.h"
#include "src/pubimp.h"
#include "../SQL/sqlProvider.h"
#include <QMessageBox>
#include "base/Fast/config.h"

class SysMembers
{

public:

    static SysMembers* GetInstance(){
        static QMutex mutex;
        static QScopedPointer<SysMembers> inst;
        if (Q_UNLIKELY(!inst)) {
            mutex.lock();
            if (!inst) {
                inst.reset(new SysMembers);
            }
            mutex.unlock();
        }
        return inst.data();
    }

    std::string getDBPath();    // 获取默认数据库的位置

    void update();              // 更新所有的焊缝信息

    void initCads();            // 初始化所有的ｃａｄ容器
    /**
     * @brief initAllSeams
     * @details 初始化所有的焊缝id
     */
    void initAllSeams();
    void importALL();


    boost::signals2::signal<void ()> moduleInitDone ;

public:
    QStringList cads;      // 存储当前CAD的所有
    QStringList seams;      // 存储当前所有的焊缝ID
    QStringList seaminfos;  // 存储所有的名称seam0_1_0
    std::atomic<bool> news = ATOMIC_FLAG_INIT; //  当前是否已经全部初始化


    int defaultDelayTime = 20;      // 定义默认超时时间
    int debugRobotSpeed  = 80;      // 定义机器人默认调试速度
private:
    SysMembers();

};

#endif // SYSMEMBERS_H
